﻿using System;

namespace System
{
	public delegate TOut Func<TOut>();
	public delegate TOut Func<T1,TOut>(T1 in1);
	public delegate TOut Func<T1,T2,TOut>(T1 in1,T2 in2);
	public delegate TOut Func<T1,T2,T3,TOut>(T1 in1,T2 in2,T3 in3);
	public delegate TOut Func<T1,T2,T3,T4,TOut>(T1 in1,T2 in2,T3 in3,T4 in4);
	public delegate TOut Func<T1,T2,T3,T4,T5,TOut>(T1 in1,T2 in2,T3 in3,T4 in4,T5 in5);
	public delegate TOut Func<T1,T2,T3,T4,T5,T6,TOut>(T1 in1,T2 in2,T3 in3,T4 in4,T5 in5,T6 in6);
	public delegate TOut Func<T1,T2,T3,T4,T5,T6,T7,TOut>(T1 in1,T2 in2,T3 in3,T4 in4,T5 in5,T6 in6,T7 in7);
	public delegate TOut Func<T1,T2,T3,T4,T5,T6,T7,T8,TOut>(T1 in1,T2 in2,T3 in3,T4 in4,T5 in5,T6 in6,T7 in7,T8 in8);
	public delegate TOut Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,TOut>(T1 in1,T2 in2,T3 in3,T4 in4,T5 in5,T6 in6,T7 in7,T8 in8,T9 in9);
	public delegate void Action();
	//public delegate void Action<T1>(T1 in1);
	public delegate void Action<T1,T2>(T1 in1,T2 in2);
}
